﻿using System.Threading.Tasks;

namespace MaxStoreErp.Core.Interfaces
{
    /// <summary>
    /// Интерфейс диалога прогресса
    /// </summary>
    public interface IProgressDialogController
    {
        /// <summary>
        /// Получает значение, указывающее состояние окна прогресса
        /// </summary>
        bool IsOpen { get; }

        /// <summary>
        /// Получает значение, указывающее на нажатую кнопку отмены
        /// </summary>
        bool IsCanceled { get; }

        /// <summary>
        /// Устанавливает ProgressBar в состояние неопределенности
        /// </summary>
        void SetIndeterminate();

        /// <summary>
        /// Устанавливает видимость кнопки отмены.
        /// </summary>
        /// <param name="value"><c>True</c> - если кнопку требуется отображать</param>
        void SetCancelable(bool value);

        /// <summary>
        /// Устанавливает значение прогресса
        /// </summary>
        /// <param name="value">Процент прогресса</param>
        void SetProgress(double value);

        /// <summary>
        /// Устанавливает сообщение окна прогресса
        /// </summary>
        /// <param name="message">Устанавливаемое сообщение</param>
        void SetMessage(string message);

        /// <summary>
        /// Запускает операцию закрытия диалогового окна
        /// </summary>
        /// <returns>Задача операции</returns>
        Task CloseAsync();
    }
}
